home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1997 October: Mac OS SDK / Dev.CD Oct 97 SDK1.toast / Development Kits (Disc 1) / Interfaces&Libraries / Universal / Interfaces / CIncludes / DrawSprocket.h < prev    next >
Encoding:
C/C++ Source or Header  |  1997-08-12  |  12.4 KB  |  470 lines  |  [TEXT/MPS ]

  1. /*
  2.      File:        DrawSprocket.h
  3.  
  4.      Contains:    Games Sprockets: DrawSprocket interfaces
  5.  
  6.      Version:    Technology:    Draw Sprocket 1.1.2
  7.                  Release:    Universal Interfaces 3.0.1
  8.  
  9.      Copyright:    © 1996-1997 by Apple Computer, Inc., all rights reserved.
  10.  
  11.      Bugs?:        Please include the the file and version information (from above) with
  12.                  the problem description.  Developers belonging to one of the Apple
  13.                  developer programs can submit bug reports to:
  14.  
  15.                      devsupport@apple.com
  16.  
  17. */
  18. #ifndef __DRAWSPROCKET__
  19. #define __DRAWSPROCKET__
  20.  
  21. #ifndef __TYPES__
  22. #include <Types.h>
  23. #endif
  24. #ifndef __EVENTS__
  25. #include <Events.h>
  26. #endif
  27. #ifndef __QUICKDRAW__
  28. #include <Quickdraw.h>
  29. #endif
  30. #ifndef __QDOFFSCREEN__
  31. #include <QDOffscreen.h>
  32. #endif
  33. #ifndef __DISPLAYS__
  34. #include <Displays.h>
  35. #endif
  36.  
  37.  
  38.  
  39. #if PRAGMA_ONCE
  40. #pragma once
  41. #endif
  42.  
  43. #ifdef __cplusplus
  44. extern "C" {
  45. #endif
  46.  
  47. #if PRAGMA_IMPORT
  48. #pragma import on
  49. #endif
  50.  
  51. #if PRAGMA_STRUCT_ALIGN
  52.     #pragma options align=power
  53. #elif PRAGMA_STRUCT_PACKPUSH
  54.     #pragma pack(push, 2)
  55. #elif PRAGMA_STRUCT_PACK
  56.     #pragma pack(2)
  57. #endif
  58.  
  59. #if PRAGMA_ENUM_ALWAYSINT
  60.     #pragma enumsalwaysint on
  61. #elif PRAGMA_ENUM_OPTIONS
  62.     #pragma option enum=int
  63. #elif PRAGMA_ENUM_PACK
  64.     #if __option(pack_enums)
  65.         #define PRAGMA_ENUM_PACK__DRAWSPROCKET__
  66.     #endif
  67.     #pragma options(!pack_enums)
  68. #endif
  69.  
  70. #if TARGET_CPU_PPC
  71. /*
  72. ********************************************************************************
  73. ** error/warning codes
  74. ********************************************************************************
  75. */
  76.  
  77. enum {
  78.     kDSpNotInitializedErr        = -30440L,
  79.     kDSpSystemSWTooOldErr        = -30441L,
  80.     kDSpInvalidContextErr        = -30442L,
  81.     kDSpInvalidAttributesErr    = -30443L,
  82.     kDSpContextAlreadyReservedErr = -30444L,
  83.     kDSpContextNotReservedErr    = -30445L,
  84.     kDSpContextNotFoundErr        = -30446L,
  85.     kDSpFrameRateNotReadyErr    = -30447L,
  86.     kDSpConfirmSwitchWarning    = -30448L,
  87.     kDSpInternalErr                = -30449L,
  88.     kDSpStereoContextErr        = -30450L
  89. };
  90.  
  91. /*
  92. ********************************************************************************
  93. ** constants
  94. ********************************************************************************
  95. */
  96.  
  97. enum DSpDepthMask {
  98.     kDSpDepthMask_1                = 1 << 0,
  99.     kDSpDepthMask_2                = 1 << 1,
  100.     kDSpDepthMask_4                = 1 << 2,
  101.     kDSpDepthMask_8                = 1 << 3,
  102.     kDSpDepthMask_16            = 1 << 4,
  103.     kDSpDepthMask_32            = 1 << 5,
  104.     kDSpDepthMask_All            = -1
  105. };
  106. typedef enum DSpDepthMask DSpDepthMask;
  107.  
  108.  
  109. enum DSpColorNeeds {
  110.     kDSpColorNeeds_DontCare        = 0L,
  111.     kDSpColorNeeds_Request        = 1L,
  112.     kDSpColorNeeds_Require        = 2L
  113. };
  114. typedef enum DSpColorNeeds DSpColorNeeds;
  115.  
  116.  
  117. enum DSpContextState {
  118.     kDSpContextState_Active        = 0L,
  119.     kDSpContextState_Paused        = 1L,
  120.     kDSpContextState_Inactive    = 2L
  121. };
  122. typedef enum DSpContextState DSpContextState;
  123.  
  124. /* kDSpContextOption_QD3DAccel not yet implemented */
  125.  
  126. enum DSpContextOption {
  127.                                                                 /*    kDSpContextOption_QD3DAccel        = 1<<0,*/
  128.     kDSpContextOption_PageFlip    = 1 << 1,
  129.     kDSpContextOption_DontSyncVBL = 1 << 2,
  130.     kDSpContextOption_Stereoscopic = 1 << 3
  131. };
  132. typedef enum DSpContextOption DSpContextOption;
  133.  
  134.  
  135. enum DSpAltBufferOption {
  136.     kDSpAltBufferOption_RowBytesEqualsWidth = 1 << 0
  137. };
  138. typedef enum DSpAltBufferOption DSpAltBufferOption;
  139.  
  140.  
  141. enum DSpBufferKind {
  142.     kDSpBufferKind_Normal        = 0,
  143.     kDSpBufferKind_LeftEye        = 0,
  144.     kDSpBufferKind_RightEye        = 1
  145. };
  146. typedef enum DSpBufferKind DSpBufferKind;
  147.  
  148.  
  149. enum DSpBlitMode {
  150.     kDSpBlitMode_SrcKey            = 1 << 0,
  151.     kDSpBlitMode_DstKey            = 1 << 1,
  152.     kDSpBlitMode_Interpolation    = 1 << 2
  153. };
  154. typedef enum DSpBlitMode DSpBlitMode;
  155.  
  156. /*
  157. ********************************************************************************
  158. ** data types
  159. ********************************************************************************
  160. */
  161. typedef struct OpaqueDSpAltBufferReference*  DSpAltBufferReference;
  162. typedef struct OpaqueDSpContextReference*  DSpContextReference;
  163. #define kDSpEveryContext ((DSpContextReference)NULL)
  164. typedef CALLBACK_API_C( Boolean , DSpEventProcPtr )(EventRecord *inEvent);
  165. typedef CALLBACK_API_C( Boolean , DSpCallbackProcPtr )(DSpContextReference inContext, void *inRefCon);
  166. struct DSpContextAttributes {
  167.     Fixed                             frequency;
  168.     UInt32                             displayWidth;
  169.     UInt32                             displayHeight;
  170.     UInt32                             reserved1;
  171.     UInt32                             reserved2;
  172.     UInt32                             colorNeeds;
  173.     CTabHandle                         colorTable;
  174.     OptionBits                         contextOptions;
  175.     OptionBits                         backBufferDepthMask;
  176.     OptionBits                         displayDepthMask;
  177.     UInt32                             backBufferBestDepth;
  178.     UInt32                             displayBestDepth;
  179.     UInt32                             pageCount;
  180.     char                             filler[3];
  181.     Boolean                         gameMustConfirmSwitch;
  182.     UInt32                             reserved3[4];
  183. };
  184. typedef struct DSpContextAttributes DSpContextAttributes;
  185.  
  186. typedef DSpContextAttributes *            DSpContextAttributesPtr;
  187. struct DSpAltBufferAttributes {
  188.     UInt32                             width;
  189.     UInt32                             height;
  190.     DSpAltBufferOption                 options;
  191.     UInt32                             reserved[4];
  192. };
  193. typedef struct DSpAltBufferAttributes DSpAltBufferAttributes;
  194.  
  195. typedef struct DSpBlitInfo                 DSpBlitInfo;
  196. typedef CALLBACK_API_C( void , DSpBlitDoneProc )(DSpBlitInfo *info);
  197. struct DSpBlitInfo {
  198.     Boolean                         completionFlag;
  199.     char                             filler[3];
  200.     DSpBlitDoneProc                 completionProc;
  201.     DSpContextReference             srcContext;
  202.     CGrafPtr                         srcBuffer;
  203.     Rect                             srcRect;
  204.     UInt32                             srcKey;
  205.  
  206.     DSpContextReference             dstContext;
  207.     CGrafPtr                         dstBuffer;
  208.     Rect                             dstRect;
  209.     UInt32                             dstKey;
  210.  
  211.     DSpBlitMode                     mode;
  212.     UInt32                             reserved[4];
  213. };
  214.  
  215. typedef DSpBlitInfo *                    DSpBlitInfoPtr;
  216. /*
  217. ********************************************************************************
  218. ** function prototypes
  219. ********************************************************************************
  220. */
  221. /*
  222. ** global operations
  223. */
  224. EXTERN_API_C( OSStatus )
  225. DSpStartup                        (void);
  226.  
  227. EXTERN_API_C( OSStatus )
  228. DSpShutdown                        (void);
  229.  
  230. EXTERN_API_C( OSStatus )
  231. DSpGetFirstContext                (DisplayIDType             inDisplayID,
  232.                                  DSpContextReference *    outContext);
  233.  
  234. EXTERN_API_C( OSStatus )
  235. DSpGetNextContext                (DSpContextReference     inCurrentContext,
  236.                                  DSpContextReference *    outContext);
  237.  
  238. EXTERN_API_C( OSStatus )
  239. DSpFindBestContext                (DSpContextAttributesPtr  inDesiredAttributes,
  240.                                  DSpContextReference *    outContext);
  241.  
  242. EXTERN_API_C( OSStatus )
  243. DSpCanUserSelectContext            (DSpContextAttributesPtr  inDesiredAttributes,
  244.                                  Boolean *                outUserCanSelectContext);
  245.  
  246. EXTERN_API_C( OSStatus )
  247. DSpUserSelectContext            (DSpContextAttributesPtr  inDesiredAttributes,
  248.                                  DisplayIDType             inDialogDisplayLocation,
  249.                                  DSpEventProcPtr         inEventProc,
  250.                                  DSpContextReference *    outContext);
  251.  
  252. EXTERN_API_C( OSStatus )
  253. DSpProcessEvent                    (EventRecord *            inEvent,
  254.                                  Boolean *                outEventWasProcessed);
  255.  
  256. EXTERN_API_C( OSStatus )
  257. DSpSetBlankingColor                (const RGBColor *        inRGBColor);
  258.  
  259. EXTERN_API_C( OSStatus )
  260. DSpSetDebugMode                    (Boolean                 inDebugMode);
  261.  
  262. EXTERN_API_C( OSStatus )
  263. DSpFindContextFromPoint            (Point                     inGlobalPoint,
  264.                                  DSpContextReference *    outContext);
  265.  
  266. EXTERN_API_C( OSStatus )
  267. DSpGetMouse                        (Point *                outGlobalPoint);
  268.  
  269. /*
  270. ** alternate buffer operations
  271. */
  272. EXTERN_API_C( OSStatus )
  273. DSpAltBuffer_New                (DSpContextReference     inContext,
  274.                                  Boolean                 inVRAMBuffer,
  275.                                  DSpAltBufferAttributes * inAttributes,
  276.                                  DSpAltBufferReference * outAltBuffer);
  277.  
  278. EXTERN_API_C( OSStatus )
  279. DSpAltBuffer_Dispose            (DSpAltBufferReference     inAltBuffer);
  280.  
  281. EXTERN_API_C( OSStatus )
  282. DSpAltBuffer_InvalRect            (DSpAltBufferReference     inAltBuffer,
  283.                                  const Rect *            inInvalidRect);
  284.  
  285. EXTERN_API_C( OSStatus )
  286. DSpAltBuffer_GetCGrafPtr        (DSpAltBufferReference     inAltBuffer,
  287.                                  DSpBufferKind             inBufferKind,
  288.                                  CGrafPtr *                outCGrafPtr,
  289.                                  GDHandle *                outGDevice);
  290.  
  291. /*
  292. ** context operations
  293. */
  294. /* general */
  295. EXTERN_API_C( OSStatus )
  296. DSpContext_GetAttributes        (DSpContextReference     inContext,
  297.                                  DSpContextAttributesPtr  outAttributes);
  298.  
  299. EXTERN_API_C( OSStatus )
  300. DSpContext_Reserve                (DSpContextReference     inContext,
  301.                                  DSpContextAttributesPtr  inDesiredAttributes);
  302.  
  303. EXTERN_API_C( OSStatus )
  304. DSpContext_Release                (DSpContextReference     inContext);
  305.  
  306. EXTERN_API_C( OSStatus )
  307. DSpContext_GetDisplayID            (DSpContextReference     inContext,
  308.                                  DisplayIDType *        outDisplayID);
  309.  
  310. EXTERN_API_C( OSStatus )
  311. DSpContext_GlobalToLocal        (DSpContextReference     inContext,
  312.                                  Point *                ioPoint);
  313.  
  314. EXTERN_API_C( OSStatus )
  315. DSpContext_LocalToGlobal        (DSpContextReference     inContext,
  316.                                  Point *                ioPoint);
  317.  
  318. EXTERN_API_C( OSStatus )
  319. DSpContext_SetVBLProc            (DSpContextReference     inContext,
  320.                                  DSpCallbackProcPtr     inProcPtr,
  321.                                  void *                    inRefCon);
  322.  
  323. EXTERN_API_C( OSStatus )
  324. DSpContext_GetFlattenedSize        (DSpContextReference     inContext,
  325.                                  UInt32 *                outFlatContextSize);
  326.  
  327. EXTERN_API_C( OSStatus )
  328. DSpContext_Flatten                (DSpContextReference     inContext,
  329.                                  void *                    outFlatContext);
  330.  
  331. EXTERN_API_C( OSStatus )
  332. DSpContext_Restore                (void *                    inFlatContext,
  333.                                  DSpContextReference *    outRestoredContext);
  334.  
  335. EXTERN_API_C( OSStatus )
  336. DSpContext_GetMonitorFrequency    (DSpContextReference     inContext,
  337.                                  Fixed *                outFrequency);
  338.  
  339. EXTERN_API_C( OSStatus )
  340. DSpContext_SetMaxFrameRate        (DSpContextReference     inContext,
  341.                                  UInt32                 inMaxFPS);
  342.  
  343. EXTERN_API_C( OSStatus )
  344. DSpContext_GetMaxFrameRate        (DSpContextReference     inContext,
  345.                                  UInt32 *                outMaxFPS);
  346.  
  347. EXTERN_API_C( OSStatus )
  348. DSpContext_SetState                (DSpContextReference     inContext,
  349.                                  DSpContextState         inState);
  350.  
  351. EXTERN_API_C( OSStatus )
  352. DSpContext_GetState                (DSpContextReference     inContext,
  353.                                  DSpContextState *        outState);
  354.  
  355. EXTERN_API_C( OSStatus )
  356. DSpContext_IsBusy                (DSpContextReference     inContext,
  357.                                  Boolean *                outBusyFlag);
  358.  
  359. /* dirty rectangles */
  360. EXTERN_API_C( OSStatus )
  361. DSpContext_SetDirtyRectGridSize    (DSpContextReference     inContext,
  362.                                  UInt32                 inCellPixelWidth,
  363.                                  UInt32                 inCellPixelHeight);
  364.  
  365. EXTERN_API_C( OSStatus )
  366. DSpContext_GetDirtyRectGridSize    (DSpContextReference     inContext,
  367.                                  UInt32 *                outCellPixelWidth,
  368.                                  UInt32 *                outCellPixelHeight);
  369.  
  370. EXTERN_API_C( OSStatus )
  371. DSpContext_GetDirtyRectGridUnits (DSpContextReference     inContext,
  372.                                  UInt32 *                outCellPixelWidth,
  373.                                  UInt32 *                outCellPixelHeight);
  374.  
  375. EXTERN_API_C( OSStatus )
  376. DSpContext_InvalBackBufferRect    (DSpContextReference     inContext,
  377.                                  const Rect *            inRect);
  378.  
  379. /* underlays */
  380. EXTERN_API_C( OSStatus )
  381. DSpContext_SetUnderlayAltBuffer    (DSpContextReference     inContext,
  382.                                  DSpAltBufferReference     inNewUnderlay);
  383.  
  384. EXTERN_API_C( OSStatus )
  385. DSpContext_GetUnderlayAltBuffer    (DSpContextReference     inContext,
  386.                                  DSpAltBufferReference * outUnderlay);
  387.  
  388. /* gamma */
  389. EXTERN_API_C( OSStatus )
  390. DSpContext_FadeGammaOut            (DSpContextReference     inContext,
  391.                                  RGBColor *                inZeroIntensityColor);
  392.  
  393. EXTERN_API_C( OSStatus )
  394. DSpContext_FadeGammaIn            (DSpContextReference     inContext,
  395.                                  RGBColor *                inZeroIntensityColor);
  396.  
  397. EXTERN_API_C( OSStatus )
  398. DSpContext_FadeGamma            (DSpContextReference     inContext,
  399.                                  SInt32                 inPercentOfOriginalIntensity,
  400.                                  RGBColor *                inZeroIntensityColor);
  401.  
  402. /* buffering */
  403. EXTERN_API_C( OSStatus )
  404. DSpContext_SwapBuffers            (DSpContextReference     inContext,
  405.                                  DSpCallbackProcPtr     inBusyProc,
  406.                                  void *                    inUserRefCon);
  407.  
  408. EXTERN_API_C( OSStatus )
  409. DSpContext_GetBackBuffer        (DSpContextReference     inContext,
  410.                                  DSpBufferKind             inBufferKind,
  411.                                  CGrafPtr *                outBackBuffer);
  412.  
  413. EXTERN_API_C( OSStatus )
  414. DSpContext_GetFrontBuffer        (DSpContextReference     inContext,
  415.                                  CGrafPtr *                outFrontBuffer);
  416.  
  417. /* clut operations */
  418. EXTERN_API_C( OSStatus )
  419. DSpContext_SetCLUTEntries        (DSpContextReference     inContext,
  420.                                  const ColorSpec *        inEntries,
  421.                                  UInt16                 inStartingEntry,
  422.                                  UInt16                 inLastEntry);
  423.  
  424. EXTERN_API_C( OSStatus )
  425. DSpContext_GetCLUTEntries        (DSpContextReference     inContext,
  426.                                  ColorSpec *            outEntries,
  427.                                  UInt16                 inStartingEntry,
  428.                                  UInt16                 inLastEntry);
  429.  
  430. /* blit operations */
  431. EXTERN_API_C( OSStatus )
  432. DSpBlit_Faster                    (DSpBlitInfoPtr         inBlitInfo,
  433.                                  Boolean                 inAsyncFlag);
  434.  
  435. EXTERN_API_C( OSStatus )
  436. DSpBlit_Fastest                    (DSpBlitInfoPtr         inBlitInfo,
  437.                                  Boolean                 inAsyncFlag);
  438.  
  439. #endif  /* TARGET_CPU_PPC */
  440.  
  441.  
  442. #if PRAGMA_ENUM_ALWAYSINT
  443.     #pragma enumsalwaysint reset
  444. #elif PRAGMA_ENUM_OPTIONS
  445.     #pragma option enum=reset
  446. #elif defined(PRAGMA_ENUM_PACK__DRAWSPROCKET__)
  447.     #pragma options(pack_enums)
  448. #endif
  449.  
  450. #if PRAGMA_STRUCT_ALIGN
  451.     #pragma options align=reset
  452. #elif PRAGMA_STRUCT_PACKPUSH
  453.     #pragma pack(pop)
  454. #elif PRAGMA_STRUCT_PACK
  455.     #pragma pack()
  456. #endif
  457.  
  458. #ifdef PRAGMA_IMPORT_OFF
  459. #pragma import off
  460. #elif PRAGMA_IMPORT
  461. #pragma import reset
  462. #endif
  463.  
  464. #ifdef __cplusplus
  465. }
  466. #endif
  467.  
  468. #endif /* __DRAWSPROCKET__ */
  469.  
  470.